package git.soulbgm.service;

import com.jcraft.jsch.JSchException;

/**
 * 启动服务
 *
 * @author SoulBGM
 * @date 2021/02/02
 */
public interface StartupService {

    /**
     * 异步启动监控代理程序
     *
     * @param nodeCode 节点/主机编号
     */
    void asyncStartupNode(Integer nodeCode);

    /**
     * 启动和关闭节点监控代理程序
     *
     * @param nodeCode 节点/主机编号
     * @param flag     上下线标识
     * @param isManual 是否手动
     * @return {@link String}
     * @throws JSchException jsch例外
     */
    String startupAndShutdownNode(Integer nodeCode, int flag, boolean isManual) throws JSchException;

    /**
     * 启动服务
     *
     * @param nodeCode    节点/主机编号
     * @param serviceCode 服务编号
     */
    void startupService(Integer nodeCode, Integer serviceCode);

    /**
     * 启动和关闭服务
     *
     * @param nodeCode    节点/主机编号
     * @param serviceCode 服务编号
     * @param flag        上下线标识
     * @param isManual    是否手动
     * @return {@link String}
     */
    String startupAndShutdownService(Integer nodeCode, Integer serviceCode, int flag, boolean isManual);

    /**
     * 启动第三方软件
     *
     * @param nodeCode     节点/主机编号
     * @param softwareName 软件名字
     * @param processName  进程名称
     */
    void startupSoftware(Integer nodeCode, String softwareName, String processName);

    /**
     * 启动和关闭软件
     *
     * @param nodeCode     节点/主机编号
     * @param softwareName 软件名字
     * @param processName  进程名称
     * @param flag         上下线标识
     * @param isManual     是否手动
     * @return {@link String}
     */
    String startupAndShutdownSoftware(Integer nodeCode, String softwareName, String processName, int flag, boolean isManual);

}
